/**
 *
 */
package com.ls.lserp.modules.order.service;

import java.math.BigDecimal;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.ls.lserp.common.persistence.Page;
import com.ls.lserp.common.service.CrudService;
import com.ls.lserp.modules.common.entity.Material;
import com.ls.lserp.modules.material.entity.InventoryRequestEx;
import com.ls.lserp.modules.order.dao.CustomizationUnitDao;
import com.ls.lserp.modules.order.dao.OrderDao;
import com.ls.lserp.modules.order.entity.Order;
import com.ls.lserp.modules.order.entity.StyleOptionEntity;



/**
 * 订单
 * @author zq
 * @version 2016-11-16
 */
@Service
@Transactional(readOnly = false)
public class CustomizationUnitCostService extends CrudService<CustomizationUnitDao, StyleOptionEntity>{

    @Autowired
    private CustomizationUnitDao customizationUnitDao;
    
    @Autowired
    private OrderDao orderDao;


    /**
     * @Title: findList
     * @Description: 查询
     * @param @param page
     * @param @param Order
     * @param @return
     * @return Page<Order>
     * @throws
     */
    public Page<StyleOptionEntity> findList(Page<StyleOptionEntity> page, StyleOptionEntity styleOptionEntity) {
        // 设置分页参数
    	styleOptionEntity.preInsert();
    	styleOptionEntity.setPage(page);
    	List<StyleOptionEntity> styleOptionList = customizationUnitDao.findList(styleOptionEntity);
    	List<StyleOptionEntity> styleOptionList2 = null;
    	if (styleOptionList != null && styleOptionList.size() > 0) {
	    	for (int i = 0; i < styleOptionList.size(); i++) {
	    		styleOptionList2 = customizationUnitDao.findMaterialLabelList(styleOptionList.get(i));
	    		if (styleOptionList2 != null && styleOptionList2.size() > 0) {
					for (int j = 0; j < styleOptionList2.size(); j++) {
						if (styleOptionList2.get(j).getItemValue() != null && !"".equals(styleOptionList2.get(j).getItemValue())) {
							/* 扣 */						
							if ("4SBU".equals(styleOptionList2.get(j).getItemValue())) {
								styleOptionList.get(i).setButtonSBU(styleOptionList2.get(j).getMaterialCode());
							/* 洗涤标 */	
							}else if ("4CALB".equals(styleOptionList2.get(j).getItemValue())) {
								styleOptionList.get(i).setCareLabel(styleOptionList2.get(j).getMaterialCode());
							/* 产地标 */		
							}else if ("4COFO".equals(styleOptionList2.get(j).getItemValue())) {
								styleOptionList.get(i).setCountryOfOrigin(styleOptionList2.get(j).getMaterialCode());
							/* 小号 */	
							}else if ("4SIZELB".equals(styleOptionList2.get(j).getItemValue())) {
								styleOptionList.get(i).setSizeLabel(styleOptionList2.get(j).getMaterialCode());
							/* 主商标 */	
							}else if ("LP".equals(styleOptionList2.get(j).getItemValue().substring(0, 2))) {
								styleOptionList.get(i).setLabelPosition(styleOptionList2.get(j).getMaterialCode());
							}
						}
					}
				}
			}
    	}
        // 执行分页查询
        page.setList(styleOptionList);

        return page;
    }
    
    /**
     * 插入定制单耗信息
     * @param fabricCode
     * @return
     */
    public void updateExcelData(List<StyleOptionEntity> list) throws Exception{
    	if (list!=null) {
    		Long styleId = null;
    		//单耗
    		BigDecimal materialUnitCost = null;
    		//损耗
    		BigDecimal materialLoss = null;
    		//换残
    		BigDecimal changeImperfect = null;
    		//总单耗
    		BigDecimal unitCostSum = null;
			for(StyleOptionEntity styleOptionEntity:list){
				if (styleOptionEntity!=null) {
					if (styleOptionEntity.getInsideOrderNO()!=null&&!"".equals(styleOptionEntity.getInsideOrderNO())) {
						styleId = customizationUnitDao.getStyleID(styleOptionEntity.getInsideOrderNO());
					}
					//单耗
					if ("".equals(styleOptionEntity.getMaterialUnitCost())) {
						styleOptionEntity.setMaterialUnitCost("0");
					}
					//总单耗
					if ("".equals(styleOptionEntity.getUnitCostSum())) {
						styleOptionEntity.setUnitCostSum("0");
					}
					//损耗
					if ("".equals(styleOptionEntity.getMaterialLoss())) {
						styleOptionEntity.setMaterialLoss("0");
					}
					//换残
					if ("".equals(styleOptionEntity.getChangeImperfect())) {
						styleOptionEntity.setChangeImperfect("0");
					}
					//单耗
					materialUnitCost = new BigDecimal(styleOptionEntity.getMaterialUnitCost());
					//损耗
					materialLoss = new BigDecimal(styleOptionEntity.getMaterialLoss());
					//换残
					changeImperfect = new BigDecimal(styleOptionEntity.getChangeImperfect());
					// 总单耗  = 单耗 * ( 损耗 + 1 ) + 换残
					unitCostSum = (materialUnitCost.multiply(materialLoss.add(new BigDecimal(1)))).add(changeImperfect);
					styleOptionEntity.setUnitCostSum(unitCostSum + "");
					styleOptionEntity.preUpdate();
					styleOptionEntity.setStyleID(styleId);
					styleOptionEntity.setStyleMaterialID(Long.parseLong(styleOptionEntity.getMaterialCode().split(":")[0]));
					customizationUnitDao.updateExcelData(styleOptionEntity);
				}
			}
			//更新合同表但单耗状态为1
			orderDao.updateUnitCostStatus(styleId);
		}
    }
    
    /**
     * 获取定制单耗明细
     * @param fabricCode
     * @return
     */
    public List<StyleOptionEntity> findUnitCostDetail(StyleOptionEntity styleOptionEntity){
    	return customizationUnitDao.findUnitCostDetail(styleOptionEntity);
    }
    
    /**
     * 获取定制单耗明细
     * @param fabricCode
     * @return
     */
    public List<InventoryRequestEx> findAllUnitCost(InventoryRequestEx inventoryRequestEx){
    	return customizationUnitDao.findAllUnitCost(inventoryRequestEx);
    }
    
    /**
     * 获取定制合同小信息 
     * 
     * @return
     */
    public List<StyleOptionEntity> findContractInfo(){
    	return customizationUnitDao.findContractInfo();
    }
    
}
